﻿using System.Linq;
using Library.Collections.Distributed;
using Library.Distributed;

namespace Library.Linq.Distributed
{
    /// <summary>
    /// Provides functionality to evaluate queries against a specific distributed data source wherein the type of the data is not specified.
    /// </summary>
    public interface IDistributedQueryable : IDistributed<IQueryable>, IQueryable, IDistributedEnumerable { }

    /// <summary>
    /// Provides functionality to evaluate queries against a specific distributed data source wherein the type of the data is known.
    /// </summary>
    /// <typeparam name="T">The type of the data in the data source.  This type parameter is covariant.  That is, you can use either the type you specified or any type that is more derived.  For more information about covariance and contravariance, see Covariance and Contravariance in Generics.</typeparam>
    public interface IDistributedQueryable<out T> : IDistributed<IQueryable<T>>, IQueryable<T>, IDistributedEnumerable<T>, IDistributedQueryable { }
}